/*
 * @Description: 反转字符串的客户端
 * 
 * @Author: rendc
 * 
 * @Date: 2025-03-17 10:09:00
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-03-18 09:34:31
 */

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class RTcpClient {
  public static void main(String[] args) throws Exception {
    // 创建客户端对象，连接服务器
    // 指定服务器的ip 端口 8888
    // 注意这里的ip和端口都是服务器规定好的
    // 企业级专线 固定ip
    Socket client = new Socket("127.0.0.1", 8888);
    System.out.println("客户端：启动成功");
    // System.out.println("客户端：启动成功" + client);
    // 获取IO流
    InputStream is = client.getInputStream();
    OutputStream os = client.getOutputStream();
    // 给服务器端发送数据
    // String string = "hello,server,我是Client";
    // 从键盘录入字符串
    Scanner sc = new Scanner(System.in);
    // 获取输入的字符串
    String string = null;
    while (true) {
      System.out.println("客户端：请输入要反转的字符串，输入\"quit\"退出");
      string = sc.nextLine();
      // System.out.println("客户端：输入的字符串:" + string);
      // 字符串转byte类型数组
      byte[] b = string.getBytes();
      // 将数组写到输出流
      os.write(b);
      // 遇到quit退出系统
      if ("quit".equals(string)) {
        break;
      }
      // 客户端接收、解析服务端的消息
      byte[] b2 = new byte[1024];
      int length = is.read(b2);
      if (length != -1) {
        System.out.println("客户端：服务器返回的内容：" + new String(b2, 0, length));
      }
    }
    // 关闭资源 - 注意处理异常 - 注意判空
    System.out.println("客户端：即将退出");
    os.close();
    is.close();
    client.close();
    sc.close();
  }
}